package br.faimg.pomar.modelo.dao;

import br.faimg.pomar.modelo.interfaces.CRUDInterface;
import br.faimg.pomar.modelo.pojo.TipodeProduto;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;

public class TipodeProdutoDAO implements CRUDInterface<TipodeProduto> {

    public void create(TipodeProduto pojo) {

        Connection con = null;
        PreparedStatement stm = null;
        String sql = "insert into TIPO_PRODUTO values(?,?);";

        try {

            con = ConnectionManager.getInstance().getConnection();
            stm = con.prepareStatement(sql);
            stm.setString(1, pojo.getCodigo());
            stm.setString(2, pojo.getDescricao());
            stm.execute();

        } catch (SQLException ex) {
            Logger.getLogger(TipodeProdutoDAO.class.getName()).log(Level.SEVERE, null, ex);
        } finally {

            if (stm != null) {

                try {
                    stm.close();
                } catch (SQLException ex) {
                    Logger.getLogger(TipodeProdutoDAO.class.getName()).log(Level.SEVERE, null, ex);
                }

            }


            if (con != null) {

                try {
                    con.close();
                } catch (SQLException ex) {
                    Logger.getLogger(TipodeProdutoDAO.class.getName()).log(Level.SEVERE, null, ex);
                }

            }

        }
    }

    public void update(TipodeProduto pojo) {
        Connection con = null;
        PreparedStatement stm = null;
        String sql = "update TIPO_PRODUTO set tpp_descricao = ? where tpp_codigo  = ?;";

        try {

            con = ConnectionManager.getInstance().getConnection();
            stm = con.prepareStatement(sql);
            stm.setString(1, pojo.getDescricao());
            stm.setString(2, pojo.getCodigo());
            stm.execute();

        } catch (SQLException ex) {
            Logger.getLogger(TipodeProdutoDAO.class.getName()).log(Level.SEVERE, null, ex);
        } finally {

            if (stm != null) {

                try {
                    stm.close();
                } catch (SQLException ex) {
                    Logger.getLogger(TipodeProdutoDAO.class.getName()).log(Level.SEVERE, null, ex);
                }

            }


            if (con != null) {

                try {
                    con.close();
                } catch (SQLException ex) {
                    Logger.getLogger(TipodeProdutoDAO.class.getName()).log(Level.SEVERE, null, ex);
                }

            }

        }

    }

    public List<TipodeProduto> readByExample(TipodeProduto pojo) {
        Connection con = null;
        PreparedStatement stm = null;
        ResultSet rs = null;
        String sql = "select * from TIPO_PRODUTO where tpp_descricao ilike ?";
        List<TipodeProduto> tipodeproduto = new ArrayList<TipodeProduto>();

        if (pojo == null) {

            pojo = new TipodeProduto();
        }

        if (pojo.getDescricao() == null) {

            pojo.setDescricao("");

        }

        con = ConnectionManager.getInstance().getConnection();
        try {
            stm = con.prepareStatement(sql);
            stm.setString(1, "%"+ pojo.getDescricao() +"%");
            rs = stm.executeQuery();

            while (rs.next()) {
                TipodeProduto temp = new TipodeProduto();
                temp.setCodigo(rs.getString("tpp_codigo"));
                temp.setDescricao(rs.getString("tpp_descricao"));
                tipodeproduto.add(temp);
            }

        } catch (SQLException ex) {
            Logger.getLogger(TipodeProdutoDAO.class.getName()).log(Level.SEVERE, null, ex);
        }

        return tipodeproduto;
    }

    public TipodeProduto readById(Character codigo) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    public void delete(Character codigo) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    public TipodeProduto readById(String codigo) {
        Connection conn = null;
        PreparedStatement stm = null;
        TipodeProduto tipoProduto = null;
        ResultSet rs = null;
        String sql = "Select * from tipo_produto where tpp_codigo = ?";
        try {
            conn = ConnectionManager.getInstance().getConnection();
            stm = conn.prepareStatement(sql);
            stm.setString(1, codigo.toString());
            rs = stm.executeQuery();
            if (rs.next()){
                tipoProduto = new TipodeProduto();
                tipoProduto.setCodigo(rs.getString("TPP_CODIGO"));
                tipoProduto.setDescricao(rs.getString("TPP_DESCRICAO"));
            }
          } catch (SQLException ex) {
            ex.printStackTrace();
          }
            finally{
        	try{
                    stm.close();
		}catch(SQLException ex){
                    ex.printStackTrace();
                }
                    try{
                        conn.close();
                    }catch(SQLException ex){
                        ex.printStackTrace();
                    }				
            }
            return tipoProduto;
    }

    public void delete(String codigo) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    public TipodeProduto readById(Integer codigo) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    public void delete(Integer codigo) {
        throw new UnsupportedOperationException("Not supported yet.");
    }
}
 
